const svgCaptcha = require('svg-captcha');
const crypto = require('crypto');

const captchaCache = new Map(); // 简单内存缓存，生产建议用Redis等

module.exports = {
  async getCaptcha(ctx) {
    // 生成验证码文本和svg图形
    const captcha = svgCaptcha.create({
      size: 4, // 字符长度
      noise: 2, // 噪点线条数
      color: true,
      background: '#f0f0f0'
    });

    // 生成唯一 key，缓存验证码文本
    const captchaKey = crypto.randomUUID();

    // 缓存，5分钟过期（简单示例）
    captchaCache.set(captchaKey, {
      text: captcha.text.toLowerCase(),
      expire: Date.now() + 5 * 60 * 1000
    });

    // 返回给前端，图片用base64字符串格式
    ctx.body = {
      code: '0',
      msg: '成功',
      data: {
        captchaKey,
        captchaBase64: `data:image/svg+xml;base64,${Buffer.from(captcha.data).toString('base64')}`
      }
    };
  },

  // 验证码验证（示例，可根据需要放到其他地方）
  verifyCaptcha(captchaKey, input) {
    const cache = captchaCache.get(captchaKey);
    if (!cache) return false;
    if (cache.expire < Date.now()) {
      captchaCache.delete(captchaKey);
      return false;
    }
    const valid = cache.text === input.toLowerCase();
    if (valid) captchaCache.delete(captchaKey);
    return valid;
  }
};
